FROM php:7.3-apache

RUN apt-get update

RUN apt-get -y install \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng-dev \
        libxml2-dev \
        libexpat1-dev \
        libwebp-dev \
        libjpeg-dev \
        libz-dev \
        libxpm-dev \
        libcurl4-openssl-dev \
        re2c \
        libc-client-dev \
        libkrb5-dev \
        libzip-dev \
        gawk \
        git \
        curl \
        zip \
        curl \
        nano \
        unzip

RUN docker-php-ext-install mbstring
RUN docker-php-ext-install xml
RUN docker-php-ext-install soap
RUN docker-php-ext-install zip
RUN docker-php-ext-install pdo
RUN docker-php-ext-install pdo_mysql
RUN docker-php-ext-install mysqli
RUN docker-php-ext-install gd
RUN docker-php-ext-install intl
RUN pecl install mcrypt-1.0.5 && \
    docker-php-ext-enable mcrypt
RUN docker-php-ext-install curl

RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
    && php composer-setup.php --install-dir=/usr/local/bin --filename=composer \
    && php -r "unlink('composer-setup.php');"

WORKDIR /var/www/html

COPY . .

RUN chown -R www-data:www-data /var/www/html

RUN rm -f composer.lock

RUN composer install

RUN php artisan key:generate

RUN chmod -R 777 storage
RUN chmod -R 777 bootstrap/cache
RUN chmod -R 777 vendor/mpdf/mpdf
RUN chmod -R 777 public
RUN php artisan config:cache
RUN php artisan cache:clear
RUN rm -rf /var/www/html/public/storage
RUN php artisan storage:link
RUN chmod 700 urn_on.sh
RUN ./urn_on.sh

RUN chown -R www-data:www-data /var/www/html/storage
RUN chown -R www-data:www-data /var/www/html/bootstrap/cache
RUN chown -R www-data:www-data /var/www/html/vendor/mpdf/mpdf
RUN chown -R www-data:www-data /var/www/html/public

COPY ./docker/api.conf /etc/apache2/sites-available/

RUN a2dissite 000-default.conf && \
    a2ensite api.conf && \
    a2enmod rewrite && \
    service apache2 restart

RUN php artisan config:cache
RUN php artisan config:clear
RUN php artisan cache:clear
RUN php artisan api:config

EXPOSE 80